A mobile telecommunications device such as a cellular telephone generally has installed within it an identity module that identifies the user to the provider of telecommunications services to which the user of the device has subscribed Different telecommunications standards have different names for such an identity module, including: Subscriber Identity Module (SIM) in the GSM standard, Universal Integrated Circuit Card (UICC) in the UMTS standard, and Removable User Identity Module (RUIM) in the CDMA standard. The identity module has stored securely therein one or more digital strings that identify the device in which the identity module is installed with a subscriber of the telecommunications services' provider. In the case of a SIM card, these strings include a unique International Mobile Subscriber Identity (IMSI) and one or more 128-bit authentication keys (Ki).
Identity modules generally, and in particular the “generic” identity module disclosed herein, are discussed herein in terms of SIMs according to the GSM standard. However, it will be clear to those skilled in the art how to apply the principles disclosed herein to identity modules of other telecommunication standards.
FIG. 1 is a high level block diagram of a conventional SIM 10. SIM 10 includes a processor 12, an external interface 14, and three memories: RAM 16, ROM 18 and EEPROM 20, all communicating with each other via a bus 22. RAM 16 is used by processor 12 as a working memory, for execution of code 30 stored in ROM 18 and EEPROM 20. Data 24, such as a SIM file system 38, as well as an IMSI and one or more Ki's, that personalize SIM 10 and associate SIM 10 with a provider of telecommunication services, are stored in EEPROM 20.
FIG. 1 is a block diagram of a legacy SIM 10. High-capacity SIMs 10 have two interfaces 14, one for SIM functionality and the other for storage access.
FIG. 2 shows the hierarchical architecture of code 30 and its relationship to data 24. The lower layer of code 30 is an operating system 34 that includes a driver 32 of interface 14. (Operating system 34 of a high capacity SIM 10 would have two such drivers 32 for its two interfaces 14.) Optionally, operating system 34 also includes a JAVA virtual machine 40. Operating system 34 includes, inter alia, communications code that is executed by processor 12 in support of communication between the mobile telecommunications device, wherein SIM 10 is installed, and the telecommunications network of the provider that SIM 10 associates with the mobile telecommunications device. Above operating system 34 are SIM file system 38 and provider-specific JAVA applets 46. SIM file system 38 includes standard files 42 that are defined by the GSM standard and provider-defined files 44 that are specific to the provider. Some of standard files 42 and provider-defined files 44 are an electrical profile of SIM 10. FIG. 1 shows that code 30 is distributed between code portion 30A in ROM 18 and code portion 30B in EEPROM 20. JAVA applets 46 are considered herein to be a part of code 30 and are stored in EEPROM 20. The remaining part of code 30 is stored in ROM 18. File system 38 is stored in EEPROM 20.
A SIM manufacturer contracting with a telecommunications service provider to provide devices such as SIM 10, installs all of code 30 and data 24 in SIM 10. Each such SIM 10 has unique data 24 (e.g. a unique IMSI and one or more unique Ki's) that, after the telecommunications services provider provides the SIM 10 to a subscriber, identifies the telecommunications device in which that SIM 10 is installed as belonging to that subscriber.
Initially, before being associated with a specific telecommunications services provider, each SIM 10 is generic. It would be highly advantageous to be able to sell such generic SIMs directly to users, and have the SIMs be personalized for the users as part of the procedure by which the users subscribe to their selected telecommunications services providers. Such generic SIMs could be sold by vendors who are not associated with specific telecommunications providers.